home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / Speech.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  11.1 KB  |  374 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Speech.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT Speech;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __SPEECH__}
  27. {$SETC __SPEECH__ := 1}
  28.  
  29. {$I+}
  30. {$SETC SpeechIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {    ConditionalMacros.p                                            }
  38.  
  39. {$IFC UNDEFINED __MEMORY__}
  40. {$I Memory.p}
  41. {$ENDC}
  42. {    MixedMode.p                                                    }
  43.  
  44. {$IFC UNDEFINED __FILES__}
  45. {$I Files.p}
  46. {$ENDC}
  47. {    OSUtils.p                                                    }
  48.  
  49. {$PUSH}
  50. {$ALIGN MAC68K}
  51. {$LibExport+}
  52.  
  53. CONST
  54.     kTextToSpeechSynthType        = 'ttsc';
  55.     kTextToSpeechVoiceType        = 'ttvd';
  56.     kTextToSpeechVoiceFileType    = 'ttvf';
  57.     kTextToSpeechVoiceBundleType = 'ttvb';
  58.  
  59.     kNoEndingProsody            = 1;
  60.     kNoSpeechInterrupt            = 2;
  61.     kPreflightThenPause            = 4;
  62.  
  63.     kImmediate                    = 0;
  64.     kEndOfWord                    = 1;
  65.     kEndOfSentence                = 2;
  66.  
  67. {------------------------------------------}
  68. { GetSpeechInfo & SetSpeechInfo selectors    }
  69. {------------------------------------------}
  70.     soStatus                    = 'stat';
  71.     soErrors                    = 'erro';
  72.     soInputMode                    = 'inpt';
  73.     soCharacterMode                = 'char';
  74.     soNumberMode                = 'nmbr';
  75.     soRate                        = 'rate';
  76.     soPitchBase                    = 'pbas';
  77.     soPitchMod                    = 'pmod';
  78.     soVolume                    = 'volm';
  79.     soSynthType                    = 'vers';
  80.     soRecentSync                = 'sync';
  81.     soPhonemeSymbols            = 'phsy';
  82.     soCurrentVoice                = 'cvox';
  83.     soCommandDelimiter            = 'dlim';
  84.     soReset                        = 'rset';
  85.     soCurrentA5                    = 'myA5';
  86.     soRefCon                    = 'refc';
  87.     soTextDoneCallBack            = 'tdcb';
  88.     soSpeechDoneCallBack        = 'sdcb';
  89.     soSyncCallBack                = 'sycb';
  90.     soErrorCallBack                = 'ercb';
  91.     soPhonemeCallBack            = 'phcb';
  92.     soWordCallBack                = 'wdcb';
  93.     soSynthExtension            = 'xtnd';
  94.     soSoundOutput                = 'sndo';
  95.  
  96. {------------------------------------------}
  97. { Speaking Mode Constants                     }
  98. {------------------------------------------}
  99.     modeText                    = 'TEXT';                        { input mode constants                     }
  100.     modePhonemes                = 'PHON';
  101.     modeNormal                    = 'NORM';                        { character mode and number mode constants }
  102.     modeLiteral                    = 'LTRL';
  103.  
  104.     soVoiceDescription            = 'info';
  105.     soVoiceFile                    = 'fref';
  106.  
  107.  
  108. TYPE
  109.     SpeechChannelRecord = RECORD
  110.         data:                    ARRAY [0..0] OF LONGINT;
  111.     END;
  112.     SpeechChannel = ^SpeechChannelRecord;
  113.  
  114.     VoiceSpec = RECORD
  115.         creator:                OSType;
  116.         id:                        OSType;
  117.     END;
  118.  
  119. CONST
  120.     kNeuter                        = 0;
  121.     kMale                        = 1;
  122.     kFemale                        = 2;
  123.  
  124.  
  125. TYPE
  126.     VoiceDescription = RECORD
  127.         length:                    LONGINT;
  128.         voice:                    VoiceSpec;
  129.         version:                LONGINT;
  130.         name:                    Str63;
  131.         comment:                Str255;
  132.         gender:                    INTEGER;
  133.         age:                    INTEGER;
  134.         script:                    INTEGER;
  135.         language:                INTEGER;
  136.         region:                    INTEGER;
  137.         reserved:                ARRAY [0..3] OF LONGINT;
  138.     END;
  139.     VoiceFileInfo = RECORD
  140.         fileSpec:                FSSpec;
  141.         resID:                    INTEGER;
  142.     END;
  143.     SpeechStatusInfo = RECORD
  144.         outputBusy:                BOOLEAN;
  145.         outputPaused:            BOOLEAN;
  146.         inputBytesLeft:            LONGINT;
  147.         phonemeCode:            INTEGER;
  148.     END;
  149.     SpeechErrorInfo = RECORD
  150.         count:                    INTEGER;
  151.         oldest:                    OSErr;
  152.         oldPos:                    LONGINT;
  153.         newest:                    OSErr;
  154.         newPos:                    LONGINT;
  155.     END;
  156.     SpeechVersionInfo = RECORD
  157.         synthType:                OSType;
  158.         synthSubType:            OSType;
  159.         synthManufacturer:        OSType;
  160.         synthFlags:                LONGINT;
  161.         synthVersion:            NumVersion;
  162.     END;
  163.     PhonemeInfo = RECORD
  164.         opcode:                    INTEGER;
  165.         phStr:                    Str15;
  166.         exampleStr:                Str31;
  167.         hiliteStart:            INTEGER;
  168.         hiliteEnd:                INTEGER;
  169.     END;
  170.     PhonemeDescriptor = RECORD
  171.         phonemeCount:            INTEGER;
  172.         thePhonemes:            ARRAY [0..0] OF PhonemeInfo;
  173.     END;
  174.     SpeechXtndData = PACKED RECORD
  175.         synthCreator:            OSType;
  176.         synthData:                ARRAY [0..1] OF Byte;
  177.     END;
  178.     DelimiterInfo = PACKED RECORD
  179.         startDelimiter:            ARRAY [0..1] OF Byte;
  180.         endDelimiter:            ARRAY [0..1] OF Byte;
  181.     END;
  182.     SpeechTextDoneProcPtr = ProcPtr;  { PROCEDURE SpeechTextDone(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT); }
  183.     SpeechDoneProcPtr = ProcPtr;  { PROCEDURE SpeechDone(parameter0: SpeechChannel; parameter1: LONGINT); }
  184.     SpeechSyncProcPtr = ProcPtr;  { PROCEDURE SpeechSync(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType); }
  185.     SpeechErrorProcPtr = ProcPtr;  { PROCEDURE SpeechError(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT); }
  186.     SpeechPhonemeProcPtr = ProcPtr;  { PROCEDURE SpeechPhoneme(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER); }
  187.     SpeechWordProcPtr = ProcPtr;  { PROCEDURE SpeechWord(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER); }
  188.     SpeechTextDoneUPP = UniversalProcPtr;
  189.     SpeechDoneUPP = UniversalProcPtr;
  190.     SpeechSyncUPP = UniversalProcPtr;
  191.     SpeechErrorUPP = UniversalProcPtr;
  192.     SpeechPhonemeUPP = UniversalProcPtr;
  193.     SpeechWordUPP = UniversalProcPtr;
  194.  
  195. CONST
  196.     uppSpeechTextDoneProcInfo = $0000FFC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param); }
  197.     uppSpeechDoneProcInfo = $000003C0; { PROCEDURE (4 byte param, 4 byte param); }
  198.     uppSpeechSyncProcInfo = $00000FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param); }
  199.     uppSpeechErrorProcInfo = $00003BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param, 4 byte param); }
  200.     uppSpeechPhonemeProcInfo = $00000BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param); }
  201.     uppSpeechWordProcInfo = $00002FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param, 2 byte param); }
  202.  
  203. FUNCTION NewSpeechTextDoneProc(userRoutine: SpeechTextDoneProcPtr): SpeechTextDoneUPP;
  204.     {$IFC NOT GENERATINGCFM }
  205.     INLINE $2E9F;
  206.     {$ENDC}
  207.  
  208. FUNCTION NewSpeechDoneProc(userRoutine: SpeechDoneProcPtr): SpeechDoneUPP;
  209.     {$IFC NOT GENERATINGCFM }
  210.     INLINE $2E9F;
  211.     {$ENDC}
  212.  
  213. FUNCTION NewSpeechSyncProc(userRoutine: SpeechSyncProcPtr): SpeechSyncUPP;
  214.     {$IFC NOT GENERATINGCFM }
  215.     INLINE $2E9F;
  216.     {$ENDC}
  217.  
  218. FUNCTION NewSpeechErrorProc(userRoutine: SpeechErrorProcPtr): SpeechErrorUPP;
  219.     {$IFC NOT GENERATINGCFM }
  220.     INLINE $2E9F;
  221.     {$ENDC}
  222.  
  223. FUNCTION NewSpeechPhonemeProc(userRoutine: SpeechPhonemeProcPtr): SpeechPhonemeUPP;
  224.     {$IFC NOT GENERATINGCFM }
  225.     INLINE $2E9F;
  226.     {$ENDC}
  227.  
  228. FUNCTION NewSpeechWordProc(userRoutine: SpeechWordProcPtr): SpeechWordUPP;
  229.     {$IFC NOT GENERATINGCFM }
  230.     INLINE $2E9F;
  231.     {$ENDC}
  232.  
  233. PROCEDURE CallSpeechTextDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT; userRoutine: SpeechTextDoneUPP);
  234.     {$IFC NOT GENERATINGCFM}
  235.     INLINE $205F, $4E90;
  236.     {$ENDC}
  237.  
  238. PROCEDURE CallSpeechDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; userRoutine: SpeechDoneUPP);
  239.     {$IFC NOT GENERATINGCFM}
  240.     INLINE $205F, $4E90;
  241.     {$ENDC}
  242.  
  243. PROCEDURE CallSpeechSyncProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType; userRoutine: SpeechSyncUPP);
  244.     {$IFC NOT GENERATINGCFM}
  245.     INLINE $205F, $4E90;
  246.     {$ENDC}
  247.  
  248. PROCEDURE CallSpeechErrorProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT; userRoutine: SpeechErrorUPP);
  249.     {$IFC NOT GENERATINGCFM}
  250.     INLINE $205F, $4E90;
  251.     {$ENDC}
  252.  
  253. PROCEDURE CallSpeechPhonemeProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER; userRoutine: SpeechPhonemeUPP);
  254.     {$IFC NOT GENERATINGCFM}
  255.     INLINE $205F, $4E90;
  256.     {$ENDC}
  257.  
  258. PROCEDURE CallSpeechWordProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER; userRoutine: SpeechWordUPP);
  259.     {$IFC NOT GENERATINGCFM}
  260.     INLINE $205F, $4E90;
  261.     {$ENDC}
  262.  
  263. FUNCTION SpeechManagerVersion: NumVersion;
  264.     {$IFC NOT GENERATINGCFM}
  265.     INLINE $203C, $0000, $000C, $A800;
  266.     {$ENDC}
  267. FUNCTION MakeVoiceSpec(creator: OSType; id: OSType; VAR voice: VoiceSpec): OSErr;
  268.     {$IFC NOT GENERATINGCFM}
  269.     INLINE $203C, $0604, $000C, $A800;
  270.     {$ENDC}
  271. FUNCTION CountVoices(VAR numVoices: INTEGER): OSErr;
  272.     {$IFC NOT GENERATINGCFM}
  273.     INLINE $203C, $0108, $000C, $A800;
  274.     {$ENDC}
  275. FUNCTION GetIndVoice(index: INTEGER; VAR voice: VoiceSpec): OSErr;
  276.     {$IFC NOT GENERATINGCFM}
  277.     INLINE $203C, $030C, $000C, $A800;
  278.     {$ENDC}
  279. FUNCTION GetVoiceDescription(VAR voice: VoiceSpec; VAR info: VoiceDescription; infoLength: LONGINT): OSErr;
  280.     {$IFC NOT GENERATINGCFM}
  281.     INLINE $203C, $0610, $000C, $A800;
  282.     {$ENDC}
  283. FUNCTION GetVoiceInfo(VAR voice: VoiceSpec; selector: OSType; voiceInfo: UNIV Ptr): OSErr;
  284.     {$IFC NOT GENERATINGCFM}
  285.     INLINE $203C, $0614, $000C, $A800;
  286.     {$ENDC}
  287. FUNCTION NewSpeechChannel(VAR voice: VoiceSpec; VAR chan: SpeechChannel): OSErr;
  288.     {$IFC NOT GENERATINGCFM}
  289.     INLINE $203C, $0418, $000C, $A800;
  290.     {$ENDC}
  291. FUNCTION DisposeSpeechChannel(chan: SpeechChannel): OSErr;
  292.     {$IFC NOT GENERATINGCFM}
  293.     INLINE $203C, $021C, $000C, $A800;
  294.     {$ENDC}
  295. FUNCTION SpeakString(s: StringPtr): OSErr;
  296.     {$IFC NOT GENERATINGCFM}
  297.     INLINE $203C, $0220, $000C, $A800;
  298.     {$ENDC}
  299. FUNCTION SpeakText(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT): OSErr;
  300.     {$IFC NOT GENERATINGCFM}
  301.     INLINE $203C, $0624, $000C, $A800;
  302.     {$ENDC}
  303. FUNCTION SpeakBuffer(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; controlFlags: LONGINT): OSErr;
  304.     {$IFC NOT GENERATINGCFM}
  305.     INLINE $203C, $0828, $000C, $A800;
  306.     {$ENDC}
  307. FUNCTION StopSpeech(chan: SpeechChannel): OSErr;
  308.     {$IFC NOT GENERATINGCFM}
  309.     INLINE $203C, $022C, $000C, $A800;
  310.     {$ENDC}
  311. FUNCTION StopSpeechAt(chan: SpeechChannel; whereToStop: LONGINT): OSErr;
  312.     {$IFC NOT GENERATINGCFM}
  313.     INLINE $203C, $0430, $000C, $A800;
  314.     {$ENDC}
  315. FUNCTION PauseSpeechAt(chan: SpeechChannel; whereToPause: LONGINT): OSErr;
  316.     {$IFC NOT GENERATINGCFM}
  317.     INLINE $203C, $0434, $000C, $A800;
  318.     {$ENDC}
  319. FUNCTION ContinueSpeech(chan: SpeechChannel): OSErr;
  320.     {$IFC NOT GENERATINGCFM}
  321.     INLINE $203C, $0238, $000C, $A800;
  322.     {$ENDC}
  323. FUNCTION SpeechBusy: INTEGER;
  324.     {$IFC NOT GENERATINGCFM}
  325.     INLINE $203C, $003C, $000C, $A800;
  326.     {$ENDC}
  327. FUNCTION SpeechBusySystemWide: INTEGER;
  328.     {$IFC NOT GENERATINGCFM}
  329.     INLINE $203C, $0040, $000C, $A800;
  330.     {$ENDC}
  331. FUNCTION SetSpeechRate(chan: SpeechChannel; rate: Fixed): OSErr;
  332.     {$IFC NOT GENERATINGCFM}
  333.     INLINE $203C, $0444, $000C, $A800;
  334.     {$ENDC}
  335. FUNCTION GetSpeechRate(chan: SpeechChannel; VAR rate: Fixed): OSErr;
  336.     {$IFC NOT GENERATINGCFM}
  337.     INLINE $203C, $0448, $000C, $A800;
  338.     {$ENDC}
  339. FUNCTION SetSpeechPitch(chan: SpeechChannel; pitch: Fixed): OSErr;
  340.     {$IFC NOT GENERATINGCFM}
  341.     INLINE $203C, $044C, $000C, $A800;
  342.     {$ENDC}
  343. FUNCTION GetSpeechPitch(chan: SpeechChannel; VAR pitch: Fixed): OSErr;
  344.     {$IFC NOT GENERATINGCFM}
  345.     INLINE $203C, $0450, $000C, $A800;
  346.     {$ENDC}
  347. FUNCTION SetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  348.     {$IFC NOT GENERATINGCFM}
  349.     INLINE $203C, $0654, $000C, $A800;
  350.     {$ENDC}
  351. FUNCTION GetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  352.     {$IFC NOT GENERATINGCFM}
  353.     INLINE $203C, $0658, $000C, $A800;
  354.     {$ENDC}
  355. FUNCTION TextToPhonemes(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; phonemeBuf: Handle; VAR phonemeBytes: LONGINT): OSErr;
  356.     {$IFC NOT GENERATINGCFM}
  357.     INLINE $203C, $0A5C, $000C, $A800;
  358.     {$ENDC}
  359. FUNCTION UseDictionary(chan: SpeechChannel; dictionary: Handle): OSErr;
  360.     {$IFC NOT GENERATINGCFM}
  361.     INLINE $203C, $0460, $000C, $A800;
  362.     {$ENDC}
  363.  
  364. {$ALIGN RESET}
  365. {$POP}
  366.  
  367. {$SETC UsingIncludes := SpeechIncludes}
  368.  
  369. {$ENDC} {__SPEECH__}
  370.  
  371. {$IFC NOT UsingIncludes}
  372.  END.
  373. {$ENDC}
  374.